#!/usr/bin/env node

// Node CLI 应用入口文件必须要有这样的文件头
// 如果是 Linux 或者 macOS 系统下还需要修改此文件的读写权限 755
// 具体就是通过 chmod 755 cli.js 实现修改

// console.log('cli working!')

// 脚手架的工作过程：
// 1.通过命令行交互询问用户问题
// 2.根据用户回答的结果生成文件

const fs = require("fs");
const path = require("path");
const inquire = require("inquirer");
const ejs = require("ejs");

// prompt作用：发起一行命令行询问，接收数组参数，type为输入方式，name为键，message为屏幕询问信息
// then  作用：获取到用户的回答
inquire
  .prompt([
    {
      type: "input",
      name: "name",
      message: "Project name?",
    },
  ])
  .then((answer) => {
    // console.log(answer);

    // 模板目录
    const tmplDir = path.join(__dirname, "templates");
    // 目标目录
    const destDir = process.cwd();
    // 将模板目录下的所有文件读取到目标目录下
    fs.readdir(tmplDir, (err, files) => {
      if (err) throw err;
      files.forEach((file) => {
        // console.log(file);

        // 通过模板引擎去渲染模板文件
        ejs.renderFile(path.join(tmplDir, file), answer, (err, result) => {
          if (err) throw err;
          // console.log(result);

          // 将结果写入到目标文件路径
          fs.writeFileSync(path.join(destDir, file), result);
        });
      });
    });
  });
